Protocole HSRP pfSense et certificat SSL
Introduction
Dans ce labo, nous allons réaliser un cluster entre deux pfSense avec le protocole Carp ainsi que la mise en place d'un certificat SSL et de règles firewall autorisant les connexions uniquement pour le port 443
Topologie :
-
WAN : 192.168.159.0 /24 | Réseau qui relie à internet
-
SYNC : 10.0.0.0 /30 | Réseau qui relie les pfSense
-
LAN1 : 192.168.1.0 /24 | Réseau des postes client
-
LAN2 : 192.168.2.0 /24 | Réseau des serveurs Apaches
Configuration des pfSense
La première étape pour les pfSense est d'y ajouter de nouvelles cartes réseaux. Par défaut sur Vmware, il n'y en a qu'une que l'on a mis en NAT a fin d'y mettre notre WAN dessus et avoir notre porte de sortie. On ajoutera donc 3 cartes réseaux. Une pour notre réseau reliant nos deux pfSense servant pour la pfSync, une carte réseau pour notre lan avec notre Pc et une dernière carte réseau pour le lan contenant les deux serveurs Apache.
Voici donc la configuration de mes deux pfSense, à gauche le pfSense 1 et à droite le pfSense 2 :
High Availability
Une fois donc connecté aux deux interfaces web pfSense, il nous faudra d'abord mettre en place la High Availability, pour que si un de nos pfSense cesse de fonctionner, le deuxième prend le relai.
Dans notre pfSense maitre, ici le 1, renseignez l’adresse IP de l’interface du Pfsense exclave (celle sur l'interface opt1). Y mettre aussi le username et le mot de passe du pfSense exclave et on sélectionne toutes les options à synchroniser.
Faire la même pour le pfSense exclave sans renseigner les informations dans l'onglet XMLRPC
Pour vérifier si la High Availability fonctionne bien, créez un user dans le pfSense maître, et vérifiez si il apparaît bien dans le pfSense exclave.
Virtual IP
Nous allons maintenant configurer les VIP pour les réseaux 192.168.1.0 /24 et 192.168.2.0 /24. Comme nos deux pfSense sont synchronisés, pas besoin de faire la manipulation dans les deux.
Pour faire notre Vip, aller dans Firewall > Virtual Ips > add
Dans interface nous mettons celle correspondante et nous renseignons dans addresse l'ip ainsi que le masque prendra la Vip.
Nous laisserons par défaut le VHID (identifiant pour la vip car un serveur peut faire parti de plusieurs groupes de VIP) et le skew à 0 car nous sommes sur le pfSense maître (avec notre high availability la valeur sera plus élevée sur le pfSense exclave)
Test
Pour tester que tout cela fonctionne bien, nous allons sur notre pc configurer en 192.168.1.1 /24 avec pour passerelle 192.168.1.252 faire un ping -t sur notre passerelle puis mettre hors service un de nos pfSense pour voir si le deuxième prend le relai et que le ping passe toujours.
Ici, nous voyons bien les ping passent tous jusqu'au moment ou nous avons un Délai d'attente de la demande dépassé.
Cela correspond à notre mise hors tension d'un des serveur pfSense, mais on peut voir que juste après les ping reprennent car le deuxième serveur à pris le relai.
Règles firewall autorisant la connexion via port 80 (http) ou 443 (https)
Ici, nous avons mis une règle ouvrant tout vers tout. Puis nous avons une règle refusant le protocole TCP vers l'adresse de notre serveur vers le port 80. Comme ceci, il nous sera donc impossible de nous connecter au deuxième serveur Apache en HTTP.
Il n'est pas forcément préférable de faire comme ceci et de faire une règle autorisant tout vers tout. Le mieux serait de tout refuser et de faire des règles autorisant les protocoles que l'on souhaite.
Configuration des serveurs apache
Installation Apache
Passons l'étape d'installation de Debian, qui devrait être acquis, passons à l'installation d'Apache. Pour cela rien de plus simple, deux petites commandes :
sudo apt update
sudo apt install apache2
Nous allons ensuite mettre l'IP de nos Debians en statique :
Exécutez la commande :
nano /etc/network/interfaces
On renseigne ici l'IP de notre debian 1 : 192.168.2.1/24 et en gateway et dns notre Vip.
On fera de même pour notre deuxième Debian.
Une fois fait, nous pouvons maintenant nous connecter à nos deux serveurs apache depuis le Pc du réseau 192.168.1.0 /24.
Mise en place du certificat SSL
sudo apt update #Pour mettre à jour les dépendances
sudo apt install openssl #Installer openssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt #Générer un certificat autosigné non chiffré (-nodes) valide 1 an avec une clé rsa de 2048 bits
Il y aura plusieurs questions après cette commande pour configurer le certificat tel que le code du pays, province :
Country Name (2 letter code) [XX]: Tag de votre Pays
State or Province Name (full name) []: Votre ville
Locality Name (eg, city) [Default City]: Votre ville
Organization Name (eg, company) [Default Company Ltd]: Votre nom d'organisation
Organizational Unit Name (eg, section) []: Votre unité d'organisation
Common Name (eg, your name or your server's hostname) []: votre nom de domaine ou IP du serveur
Email Address []: Votre adresse mail
Ensuite, aller dans notre default-ssl.conf pour modifier le chemin vers le certificat et la clé auto signée
sudo nano /etc/apache2/sites-available/default-ssl.conf
Modifier les deux lignes suivantes parle bon chemin :
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
On enregistre les modifications et redémarre Apache :
sudo a2ensite default-ssl
sudo systemctl restart apache2
Voici comme exemple notre serveur Apache, bien accessible en HTTPS.
Le https barré signifie que la connexion entre le navigateur et le site Web est sécurisée via HTTPS, mais que le certificat SSL n'a pas été validé par une autorité de certification